package com.he.duitesmodel.hander;

/**
 * 职责链模式，将请求的处理对象像一条长链一般组合起来，形成一条对象链,沿着这条链传递请求，知道有一个对象处理请求为止。<br/>
 * 请求并不知道具体执行请求的对象是哪一个，发送者只需要将请求将给初步接收者，
 * 而接收者也不知道自己所处链的结构，只需保持下一步接收者的引用（而不需要保持对所有接收者的引用），
 * 这样就降低了发送者和接受这之间的耦合性
 */
public abstract class LeaveRequest {

    /**
     * 下一步接收者
     */
    protected  LeaveRequest leaveRequest;

    /**
     * 设置下一步接收者
     * @param leaveRequest
     */
    public void setLeaveRequest(LeaveRequest leaveRequest) {
        this.leaveRequest = leaveRequest;
    }

    /**
     * 处理请求
     * @param leaveDays
     */
    public abstract void handerLeave(int leaveDays);
}
